/* 参数的可赋值性 */
// 当基于上下文的类型推导（Contextual Typing）推导出返回类型为 void 的时候，并不会强制函数一定不能返回内容。
{
  type voidFunc = () => void;

  const f1: voidFunc = () => {
    return true;
  };
  
  const f2: voidFunc = () => true;
  
  const f3: voidFunc = function () {
    return true;
  };

  // 这些函数的返回值赋值给其他变量，也会维持void的类型
  const v1 = f1();
  
  const v2 = f2();
  
  const v3 = f3();

  // 当一个函数字面量定义返回一个 void 类型，函数是一定不能返回任何东西的
  function f4(): void {
    return true;
  }
  
  const f5 = function (): void {
    // @ts-expect-error 使用此指令忽略报错
    return true;
  };
}